const fs=require("fs")
const http=require("http")
const url=require("url")
const qs=require("querystring")
http.createServer((req,res)=>{
    if(req.url.includes("/api")){
        api(req,res)
    }else{
        static(req,res)
    }
}).listen(3000,()=>{
    console.log("服务器搭建成功，地址为http://localhost:3000")
})
function api(req,res){
    if(req.method==="GET"){
        const objget=url.parse(req.url,true).query
        handle(req,res,objget)        
    }else if(req.method==="POST"){
        let str=""
        req.on("data",(chunk)=>{
            str+=chunk
        })
        req.on("end",()=>{
            const objpost=qs.parse(str)
            handle(req,res,objpost)
        })
    }
}
function handle(req,res,DATA){
    switch(DATA.type){
        case "register":
            register(req,res,DATA);break;
        case "login":
            login(req,res,DATA);break;
        default:
            error(req,res,DATA);break;
    }
}
function register(req,res,DATA){  
   fs.readFile("./databases/userMsg.json","utf-8",(err,data)=>{
       const userMsg=JSON.parse(data)
       const flag=userMsg.some(val=>{
           return val.phone_number===DATA.phone_number
       })
       if(flag){
        const obj={
            status:0,
            title:"注册失败",
            userMsg: null
        }
           res.write(JSON.stringify(obj))
           res.end()
       }else{
           userMsg.push({
               phone_number:DATA.phone_number,
               password:DATA.password,
               password_confirm:DATA.password_confirm
           })
           fs.writeFile("./databases/userMsg.json",JSON.stringify(userMsg),(err)=>{
               const obj={
                   status:1,
                   title:"注册成功",
                   userMsg:{
                    phone_number:DATA.phone_number,
                    password:DATA.password,
                    password_confirm:DATA.password_confirm
                   }
               }
               res.write(JSON.stringify(obj))
               res.end()
           })
       }
   })
}
function login(req,res,DATA){
    fs.readFile("./databases/userMsg.json","utf-8",(err,data)=>{
        const userMsg=JSON.parse(data)
        let i=0
        const flag=userMsg.some((val,index)=>{
            i=index
            return val.phone_number===DATA.phone_email
        })
        const obj={}
        if(flag){
            if(userMsg[i].password===DATA.password){
                obj.status=1
                obj.title="登录成功"
                obj.userMsg={
                    phone_number:DATA.phone_email,
                    password:DATA.password,
                    token:Math.random()
                }
            }else{
                obj.status=2
                obj.title="密码不符"
                obj.userMsg=null
            }
        }else{
            obj.status=0
            obj.title="用户手机号不存在"
            obj.userMsg=null
        }
        res.write(JSON.stringify(obj))
        res.end()
    })
} 
// // 增加数据功能
// function sql_insert(dbName,message,callback){
//     fs.readFile(dbName,"utf-8",(err,data)=>{
//         const arr=JSON.parse(data)
//         arr.push(...message)
//         fs.writeFile(dbName,JSON.stringify(arr),(err)=>{
//             callback(err)
//         })
//     })
// }
// // 查询数据的功能
// function sql_select(dbName,callback){
//     fs.readFile(dbName,"utf-8",(err,data)=>{
//         callback(data)
//     })
// }
// // 修改数据的功能
// function sql_update(dbName,id,newMessage,callback){
//     fs.readFile(dbName,"utf-8",(err,data)=>{
//         const arr=JSON.parse(data)
//         let i=0
//         const flag=arr.some((val,index)=>{
//             i=index
//             return val.id===id
//         })
//         if(flag){
//             arr[i].name=newMessage.name
//             arr[i].result=newMessage.result
//             arr[i].tel=newMessage.tel
//         }
//         fs.writeFile(dbName,JSON.stringify(arr),(err)=>{
//             callback(err)
//         })
//     })
// }
// // 删除数据的功能
// function sql_del(dbName,id,callback){
//     fs.readFile(dbName,"utf-8",(err,data)=>{
//         const arr=JSON.parse(data)
//         let i=0
//         const flag=arr.some((val,index)=>{
//             i=index
//             return val.id===id
//         })
//         if(flag){
//            arr.splice(i,1)
//         }
//         fs.writeFile(dbName,JSON.stringify(arr),(err)=>{
//             callback(err)
//         })
//     })
// }

function error(req,res,DATA){
    console.log("error");
    res.write("not function");
    res.end()
}
function static(req,res){
    const p=url.parse(req.url).pathname
    fs.readFile("./www"+p,(err,data)=>{
        if(err){
            res.write("not file")
        }
        else{
            res.write(data)
        }
        res.end()
    })
}

